﻿#region Header
// Copyright (c) 2015 OPEN TONE, Inc.
// Released under the MIT license
// http://opensource.org/licenses/mit-license.php
#endregion
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenXmlLib.Excel;
using OpenXmlLib.Exception;

namespace OpenXmlLibTest.Excel.Impl
{
	[TestClass]
	public class ExcelImplTest : AbstractExcelTestBase
	{
		/// <summary>
		/// ファイルを開く。
		/// </summary>
		[TestMethod]
		public void TestOpen01()
		{
			IExcel excel = Open("TestOpen01.xlsx");
			Assert.IsNotNull(excel);
		}

		/// <summary>
		/// 存在しないファイルを開こうとする。
		/// </summary>
		[TestMethod]
		public void TestOpen02()
		{
			try
			{
				IExcel excel = Open("Nothing.xlsx");
				Assert.Fail();
			}
			catch (OpenXmlLibException e)
			{
				Assert.AreEqual(ErrorCodes.FILE_NOT_FOUND, e.ErrorCode);
			}
			catch (Exception e)
			{
				Assert.Fail(e.ToString());
			}
		}

		/// <summary>
		///     0バイトのファイルを開こうとする。
		/// </summary>
		[TestMethod]
		public void TestOpen03()
		{
			try
			{
				IExcel excel = Open("TestOpen03.xlsx");
				Assert.Fail();
			}
			catch (OpenXmlLibException e)
			{
				Assert.AreEqual(ErrorCodes.FILE_EMPTY, e.ErrorCode);
			}
			catch (Exception e)
			{
				Assert.Fail(e.ToString());
			}
		}

		/// <summary>
		///     Eexcelではないファイルを開こうとする。
		/// </summary>
		[TestMethod]
		public void TestOpen04()
		{
			try
			{
				IExcel excel = Open("TestOpen04.docx");
				Assert.Fail();
			}
			catch (OpenXmlLibException e)
			{
				Assert.AreEqual(ErrorCodes.INVALID_FILE_FORMAT, e.ErrorCode);
			}
			catch (Exception e)
			{
				Assert.Fail(e.ToString());
			}
		}
	}
}